上次把物件基本的移動以及跳躍都弄出來了,那麼改變物件的位置座標時,都要再額外乘上一個"Time.deltaTime",所以今天打算來解釋一下乘上的那個到底是甚麼東西。
那麼我們先了解程式執行時,我們的判斷以及改變物件座標的程式都是寫在Update的方法裡,而Update是每一個畫面就會跑一次,也就是每一幀跑一次,而一般我們已fps(Frames Per Second)表示。FPS越高代表每秒跑動的畫面就越多,同時遊戲畫面就越流暢,但每個玩家執行遊戲的設備皆不相同,這也代表著每個設備的FPS不同,平板可能為30FPS、電腦可能為120FPS。
這也代表著同樣一秒裡,使用不同的設備來執行我們的程式,其中Update執行的次數會不同,有的設備一秒只可以跑30次畫面,所以Update裡面的程式只會執行30次,而有的設備一秒可能可以跑120次畫面,那這樣Update裡面的程式就可以執行120次。
那以這樣的情況去跑我們移動物件的程式的話,假設我們的程式是一個Update,物件的座標+100,那一秒只可以跑30次畫面的設備,按著按鍵1秒,物件會前進"100 x 30 = 3000",而一秒可以跑120次畫面的設備,按著按鍵1秒,物件會前進"100 x 120 = 12000",因為設備的不同,僅僅一秒,兩個設備的物件移動距離就差了4倍。兩者的執行速度就會有差,為了彌補這個缺點,就需要使用到"Time.deltaTime"。
Time.deltaTime在不同設備是不同的數值,以前面的例子來說,他在平板就是1/30,在電腦就是1/120,那只要在乘上這個的話,就可以將多出來的那部分抵銷掉了,不論是在甚麼設備運行,物件座標它一秒就是只會+100。
Unity官方的描述及範例:
https://docs.unity3d.com/ScriptReference/Time-deltaTime.html